package abd.pr1.Mappers;


import java.sql.Blob;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.sql.DataSource;








import abd.pr1.Models.ComentarioSerie;
import abd.pr1.Models.Serie;
import abd.pr1.Models.Usuario;

public class UsuariosMapper extends AbstractMapper<Usuario, Integer> {

	private static final String[] USUARIOS_KEY_COLUMN_NAMES = new String[] { "id" };
	private static final String[] USUARIOS_COLUMN_NAMES = new String[] { "id", "nick", "password", "nacimiento", "imagen"};
	private static final String USUARIOS_TABLE_NAME = "usuarios";
	
	public UsuariosMapper(DataSource ds) {
		super(ds);
	}
	
	@Override
	protected String getTableName() {
		return USUARIOS_TABLE_NAME;
	}

	@Override
	protected String[] getColumnNames() {
		return USUARIOS_COLUMN_NAMES;
	}

	@Override
	protected Object[] serializeObject(Usuario object) {
		return new Object[] { object.getId(),object.getNick(), object.getPassword(),  object.getNacimiento(),object.getImagen()};
	}

	@Override
	protected String[] getKeyColumnNames() {
		return USUARIOS_KEY_COLUMN_NAMES;
	}

	@Override
	protected Object[] serializeKey(Integer key) {
		return new Object[] { key };
	}

	@Override
	protected Usuario buildObject(ResultSet rs) throws SQLException {
		Integer id = rs.getInt("id");
		String nick = rs.getString("nick");
		String password = rs.getString("password");
		Date nacimiento = rs.getDate("nacimiento");
		Blob imagen = rs.getBlob("imagen");
		return new Usuario(id, nick, password, nacimiento, imagen.getBytes(1,(int)imagen.length()));
	}

	@Override
	protected Integer getKey(Usuario object) {
		return object.getId();
	}

	@Override
	protected boolean hasAutoincrementKey() {
		// TODO Auto-generated method stub
		return true;
	}

	@Override
	void updateKeys(ResultSet rs, Usuario object) throws SQLException {
		Integer id = rs.getInt(1);
		object.setId(id);	
		
	}
	
	
}
